Global navigation satellite systems (GNSS) utilize satellites to enable a receiver to determine position, velocity, and time with very high accuracy and precision using signals transmitted from the satellites. Such GNSS include the Global Positioning System (GPS), GLONASS, and Galileo. The signals transmitted from the satellites include one or more carrier signals at separate known frequencies, such as a first carrier (L1), a second carrier (L2), and an additional third carrier (L5) in the GPS. A code, such as a pseudo-random (PN) noise code modulated with information, may modulate a carrier of the signal, and may be unique to each satellite. Because the satellites have known orbital positions with respect to time, the signals can be used to estimate the relative position between an antenna of a receiver and each satellite, based on the propagation time of one or more signals received from three or more of the satellites. In particular, the receiver can synchronize a local replica of the carrier and code transmitted in a signal to estimate the relative position.
A typical receiver utilizes carrier tracking loops and code tracking loops for each satellite to measure the distance and velocity between the receiver and a particular satellite. The local replicas of the carrier and code can be generated by local signal generators that are driven by the carrier tracking loops and code tracking loops. In some receivers, extended Kalman filters (EKF) may be utilized to estimate the phase of the carrier and code through joint estimation. A conventional EKF can combine information from multiple frequencies to optimally estimate the distance and velocity between the receiver and a satellite. However, EKFs are not necessarily practical for use as aggregate predictive filters for carrier and code tracking due to the need to perform floating point calculations. For example, EKFs can have demanding or excessive computational requirements associated with minimizing the mean square error for data parameters with typical dynamic ranges associated with signal processing in satellite navigation receivers. In addition, EKF filters for signal processing may require the computation of inverse matrices with the complexity of O(n3), where n is the dimension of the matrices. This fast iteration requirement prevents EKFs with complicated matrices calculations from using real-time signal processing.
One alternative representation of an EKF is a sigma rho filter. A sigma rho filter may also be utilized in some receivers to estimate the phase of the carrier and code. Sigma rho filters can use a standard deviation term (e.g., sigma parameter) and a cross correlation term (e.g., rho parameter), instead of a covariance matrix as in a typical EKF. The use of a standard deviation term can reduce the numerical range, and result in the saving of logic gates and/or the lowering of requirements for the widths of registers. The use of a cross correlation term naturally guarantees the symmetric property of the covariance matrix, in contrast to a typical EKF which uses a covariance matrix that requires an additional symmetric check. However, sigma rho filters using floating point calculations may be difficult to implement using digital circuits and may have issues with reliability and stability without special treatment, such as the possibility that the cross correlation term may not be properly bounded during the dynamic propagation and/or the measurement update of the sigma rho filter.
Accordingly, there is an opportunity for a satellite navigation receiver that addresses these concerns. More particularly, there is an opportunity for a satellite navigation receiver that simplifies and speeds up the data processing in a stable multi-band predictive filter for carrier tracking and code tracking to adaptively accommodate common information from aggregate bands and obtain the accurate position of a receiver in real time.